
#ifndef _SCENE3D_H_
#define _SCENE3D_H_

#include "engine.h"
#include "scene.h"
#include "opengl/opengl_shader.h"
#include "entity/object2D.h"
#include "entity/camera.h"

namespace engine
{
    class Scene3D : public Scene
    {
    public:
        typedef std::shared_ptr<Scene3D> ptr;

    public:
        Scene3D();
        ~Scene3D();

        // void setSkybox(Skybox::ptr skybox) { _skybox = skybox; }
        // Skybox::ptr getSkybox() { return _skybox; }
        // void setUseShadowMap(bool isUse) { _useShadowMap = isUse; }
        // bool getUseShadowMap() const { return _useShadowMap; }

        void render(double time) override;
        void processInput(GLFWwindow *window) override; // 输入处理

    public:
        Object3D *objectRoot;

    protected:
        void update();

    protected:
        // Skybox::ptr _skybox;
        // bool _useShadowMap, _useFog, _neadUpdate;
        // Fog _fog;
    };
}

#endif